package com.bridge.common.http;

/**
*@author dingyb
*created on 2018/12/8 11:12
*desc http请求附加参数类
**/

public class ReqOptions {

    /**
     * 查询时候要加的参数:sourceId，dataObjId，fields，orderBy以及上传日志的参数
     */
    public String sourceId;//数据源ID
    public String dataObjId;//资源ID
    public String fields;//查询字段，可为空，多个字段以英文逗号分隔
    public String orderBy;//排序字段，可为空，多个字段以英文逗号分隔

    /**
     * 操作数据的时候要加的参数:sourceId，dataObjId，operationType以及上传日志的参数
     */
    public int operationType;//操作类型:1 新增，2 修改，3 删除

    /**
     * 上传日志的时候要加的参数:logType，params，module,formatParam,content
     */

    /**
     * 日志上传相关参数
     */
    public String logType;//用户具体操作类型 0：登录；1：查询；2：新增；3：修改；4：删除; 5: 登出 6：其他
    public String params;//原始请求参数
    /**
     * 访问结果
     * 字典 值为“成功”或者“失败”，例如：成功。若是失败，需要填写失败原因。
     */
    public String result;
    public String module;//功能模块，格式如：通讯录>通讯录查询
    /**
     * 请求参数（格式化）
     * 参数名称+参数内容,查询时记录查询参数， 新增，修改，删除需记录相关信息的主键id及名称标题信息，
     * 格式如下：{“身份证号”:”41188888888888”,“姓名”:”测试一”,…..}
     */
    public String formatParam;
    public String content;//访问内容
    public String response;//响应内容
    public int responseTime;//请求耗时（ms）
    public String errorCode;//失败原因代码
    public String errorLog;//失败日志


    /**
     * 数据源ID
     * @param sourceId
     * @return
     */
    public ReqOptions sourceId(String sourceId){
        this.sourceId = sourceId;
        return this;
    }

    /**
     * 资源ID
     * @param dataObjId hz_+接口名字 例：hz_login (多个层级用“_”间隔，例：user/login 写成hz_user_login)
     *
     * @return
     */
    public ReqOptions dataObjId(String dataObjId){
        this.dataObjId = dataObjId;
        return this;
    }

    /**
     * 查询字段，可为空，多个字段以英文逗号分隔
     * @param fields
     * @return
     */
    public ReqOptions fields(String fields){
        this.fields = fields;
        return this;
    }

    /**
     * 排序字段，可为空，多个字段以英文逗号分隔
     * @param orderBy
     * @return
     */
    public ReqOptions orderBy(String orderBy){
        this.orderBy = orderBy;
        return this;
    }

    /**
     * 用户具体操作类型 0：登录；1：查询；2：新增；3：修改；4：删除; 5: 登出 6：其他
     * @param logType
     * @return
     */
    public ReqOptions logType(String logType){
        this.logType = logType;
        if ("2".equals(logType)){
            this.operationType = 1;
        }
        if ("3".equals(logType)){
            this.operationType = 2;
        }
        if ("4".equals(logType)){
            this.operationType = 3;
        }
        return this;
    }

    /**
     * 功能模块，格式如：通讯录>通讯录查询
     * @param module
     * @return
     */
    public ReqOptions module(String module){
        this.module = module;
        return this;
    }

    /**
     * 访问内容 暂时传“”
     * @param content
     * @return
     */
    public ReqOptions content(String content){
        this.content = content;
        return this;
    }


    @Override
    public String toString() {
        return "ReqOptions{" +
                "sourceId='" + sourceId + '\'' +
                ", dataObjId='" + dataObjId + '\'' +
                ", fields='" + fields + '\'' +
                ", orderBy='" + orderBy + '\'' +
                ", operationType=" + operationType +
                ", logType='" + logType + '\'' +
                ", params='" + params + '\'' +
                ", module='" + module + '\'' +
                ", formatParam='" + formatParam + '\'' +
                ", content='" + content + '\'' +
                '}';
    }
}
